import { _decorator, Component, Label, log, Node, NodeEventType, tween, UIOpacity, UITransform, profiler } from 'cc';
import { YXPrinter } from '../lib/yx-printer';
import { YXTypewriter } from '../lib/yx-typewriter';
const { ccclass, property } = _decorator;

import { FadeIn } from '../lib/animation/fadeIn';
@ccclass('demo')
export class demo extends Component {

    @property(YXTypewriter)
    comp: YXTypewriter = null

    @property(Node)
    nextButton: Node = null

    @property(Node)
    scene1: Node = null

    playIndex = 0;

    strs = [
        '40岁的程序员被裁后...',
        '心情非常郁闷，为什么是我！',
        'bug我写的最少，活我干的最多',
        '就因为我下班最早吗？！！！',
        '在情绪低落的同时，我拿起了键盘，别忘了我会做游戏',
        '一个会做游戏的程序员可不是任人欺负',
        '刚好前两天我看到了眼熟的电车难题'
    ];
    /*
    '据统计，百分之70多的人会拉',
    '但我想换个人，把我领到换上去',
    '如果不够，那再加上hr，',
    '很快我就把他们加上了'
    听到他们被碾压的叫声，是有点爽
    那还不够，我想让领到亲自听一听
    接着我把这个游戏发布到网络上
    并且分享给我的领导
    然后我就被拉黑了
    后来我又想，裁掉我，公司也有份
    于是，我又把公司的管理层全部加上
    刚好管理层五个人，也不用再换人了
    我就把这个路连起来，让小车在路上循环跑
    一想到这，我就立马兴奋了
    做完之后，心里的郁闷多少有点缓解了
    当我还没找到下一份工之前，每天都会玩一下。
    */

    protected onLoad(): void {
        profiler.hideStats()
        this.comp.node.on(YXPrinter.PRINT_POSITION_CHANGE, this.onPrint, this)
        this.comp.node.on(YXPrinter.PRINT_ENDED, this.onPrintEnded, this)
        this.node.on(NodeEventType.TOUCH_END, this.onTouchEnd, this)

        // 使用代码调整参数
        // this.comp.richText.fontSize = 30
        // this.comp.richText.lineHeight = this.comp.node.getComponent(UITransform).height / 4 // 分 x 行打
        // this.comp.printer.lineHeight = this.comp.richText.lineHeight

        // 开始打字
        this.comp.richText.string = this.strs[this.playIndex]
        this.comp.commitConfig()
        this.comp.printer.print()
    }

    onPrint(x: number, y: number) {

    }

    onPrintEnded(x: number, y: number) {
        if (this.comp.hasNextPage()) {
            this.nextButton.active = true
            tween(this.nextButton.getComponent(UIOpacity)).set({ opacity: 0 }).to(0.5, { opacity: 255 }).start()
            return
        }
        this.nextButton.active = true
        this.nextButton.getChildByName(`label`).getComponent(Label).string = ``
        tween(this.nextButton.getComponent(UIOpacity)).set({ opacity: 0 }).to(0.5, { opacity: 255 }).start()
        setTimeout(() => {
            this.onTouchNextButton();
        }, 1000)
    }

    onTouchNextButton() {
        // debugger
        if(this.playIndex >= this.strs.length - 1){
            this.scene1.active = true;
            this.scene1.getComponent(FadeIn).fadeIn()
            this.comp.node.active = false
            return;
        }
        this.nextButton.active = false
        this.playIndex++
        this.comp.richText.string = this.strs[this.playIndex]
        this.comp.commitConfig()
        this.comp.printer.print()

        // if (this.comp.hasNextPage()) {
            
        //     this.comp.scrollToNextPage()
        //     this.comp.printer.print() // 翻页之后，再从头开始打
        //     return
        // }
    }

    onTouchEnd() {
        // 跳过打字阶段，如果可以的话
        if (this.comp.printer.isFull() == false) {
            this.comp.printer.setFull()
            return
        }
    }
}

